package com.xy.blog.core.converter.mapstruct;

import com.xy.blog.core.springmvc.result.page.PageResp;
import org.mapstruct.IterableMapping;

import java.util.List;

/**
 * @author zanhonglei
 * @version V1.0
 * @Description: mapstruct基础实体转换类
 * @date 2020/3/4
 */
public interface BaseConverter<VO,BO,DO,REQ> extends BaseCommonConverter<REQ,BO,DO>{
    /**
     * 数据实体转换
     * @param item
     * @return
     */
    @IterableMapping(dateFormat = "yyyy-MM-dd HH:mm:ss")
    VO bo2Vo(BO item);
    @Override
    BO do2Bo(DO item);
    @Override
    DO bo2Do(BO item);
    BO vo2Bo(VO item);

    @Override
    List<BO> do2Bo(List<DO> list);

    @IterableMapping(dateFormat = "yyyy-MM-dd HH:mm:ss")
    List<VO> bo2Vo(List<BO> list);

    /**
     * 分页实体转换
     * @param item
     * @return
     */
    @IterableMapping(dateFormat = "yyyy-MM-dd HH:mm:ss")
    PageResp<VO> bo2Vo(PageResp<BO> item);
    @Override
    PageResp<BO> do2Bo(PageResp<DO> item);
    @Override
    PageResp<DO> bo2Do(PageResp<BO> item);

    /**
     * 新增转换
     * @param req
     * @return
     */
    BO req2Bo(REQ req);


}
